Елена Булыгина предлагает Вам запомнить сайт «Ленусик»
Вы хотите запомнить сайт «Ленусик»?
Да Нет
×
Прогноз погоды

Основная статья: Курсы программирования

«Сходил на два-три собеседования и нашёл работу»

Университет готовил Евгения Кириллова к градообразующему химзаводу Нижнекамска, но наш герой спустя год в Geek University стал iOS-разработчиком на удалёнке. Теперь он делится советами и вдохновением!

Я живу в Нижнекамске. У меня два высших образования: по специальностям «автоматизация» и «экономика и управление». Получал их практически одновременно — через год после первого получил второе. Когда поступал, то думал, что выучусь на разработчика, но вышло совсем не так. Программирования было мало, нас учили на сотрудников местного завода — градообразующего предприятия в химической отрасли.

Вид на Нижнекамск со стороны Елабуги

На заводе я проработал немного. Мне не понравилось, и я устроился в строительную фирму. Там я, конечно, сидел за компьютером, но к программированию моя деятельность никак не относилась — я вёл документацию. Заниматься этим всю жизнь не хотел, а вот разработчиком мечтал стать, ещё когда школу заканчивал. 

Почему iOS

Незадолго до поступления на факультет iOS-разработки я поменял телефон. У меня была Nokia Lumia на Windows, а потом я купил iPhone — мне в нём всё так понравилось, что появилась симпатия к Apple. Затем на работе вместо компьютера с Windows поставили iMac, и тут опять всё оказалось очень здорово. Экосистема Apple впечатлила! Потом я открыл для себя язык программирования Swift. Так постепенно из разных предпосылок сформировалось желание стать iOS-разработчиком. И как раз GeekBrains подвернулся очень удачно. Я долго думал и всё-таки решился, когда появилась не просто профессия, а факультет.

О трудностях и мотивации

Начинать было трудно! Первая четверть была самой сложной. Я продолжал работать, поэтому иногда учиться приходилось по ночам. Бывало, и до утра засиживался, чтобы задание выполнить. 

Процесс обучения GeekBrains был для меня в новинку. В институте преподаватели дают студентам всё то, что им нужно, чтобы выполнить задание и сдать экзамен: берёшь книгу и конспекты, готовишься, и всё в порядке. Здесь же нужно было очень много информации самим искать в интернете. Это как раз то, что на работе теперь постоянно происходит. 

Конечно, один из аспектов, который меня привлекал в будущей работе — значительное увеличение зарплаты. Ну и засиживался я до утра потому, что мне интересно программирование. Оно настолько увлекало, что я не замечал, как летит время. Я даже не зевал и не пил кофе, чтобы не воткнуться головой в клавиатуру. Я просто сидел и решал поставленные задачи!

Трудоустройство и ценность GeekBrains

Уже после первой четверти нам рекомендовали начинать ходить по собеседованиям, чтобы найти хотя бы низкооплачиваемую работу или стажировку. Но я себе этого позволить не мог, так как у меня семья и дети. Начал ходить на собеседования во время третьей четверти. Написал резюме, отправил его и принялся за поиски работы. Было приятно, что один из моих любимых преподавателей Евгений Елчев, который на момент обучения был деканом факультета, позволил указать себя в резюме в разделе «Кто может вас порекомендовать». Мы, кстати, до сих пор иногда с ним общаемся.

Начал я ходить по собеседованиям. Для меня это всегда эмоциональный момент. По итогам либо воодушевление чувствуется, либо сильная подавленность. И тут важно не падать духом, искать поддержки, хладнокровно во всём разбираться. Я после неудачных собеседований писал в нашу группу в Telegram о том, какие вопросы задавали. Сообщество всегда помогало и заряжало мотивацией!

Работу нашёл быстро, сходил всего на два или три собеседования. Третья четверть у нас заканчивалась с 2018-м календарным годом, как раз тогда я договорился с работодателем. И в первый день 2019 года подписал трудовой договор.

Устроился тогда в компанию «Технократия», которая занимается аутсорсом в сфере IT. Съездил как-то раз к ним на митап в Казань. Меня, кстати, на мероприятие позвал одногруппник, который там тогда жил. А потом, когда я уже решил, что пора трудоустраиваться, то к ним и обратился. Они узнали, что я был на их митапе, это их обрадовало, и в итоге меня взяли.

Зимний отдых «технократов», тут есть и я :)

В «Технократии» я был чуть ли не единственным удалённым сотрудником, что оказалось не совсем удобно. А переезжать в Казань я не хотел. Поэтому через четыре месяца я без особых усилий перешёл в компанию Work-zilla, где все на удалёнке — сотрудники распределены и по России, и по другим странам. До сих пор работаю здесь!

Честно скажу, что обучение на факультете iOS не то что помогло в трудоустройстве, оно стало определяющим фактором. В нижнекамском институте мы изучали технологии и языки, которые уже не используются. Разве что совсем немного C++. Знания оттуда мне если и помогли, то только на время подготовительных курсов, которые длились месяц. А всё остальное — это GeekBrains и то, что я сам где-то изучал. Но GB — 90%, если не больше.

Из программы пригодилось вообще всё. Но наиболее полезным и интересным мне показалось содержание третьей четверти, в которой был курс «Профессиональное программирование». Там рассматривались вопросы, которые в первую очередь задают на собеседованиях. Если раньше нас учили просто написать программу как-нибудь, то здесь — делать это правильно, с применением лучших практик, чтобы код хорошо поддерживался. Очень часто на собеседованиях спрашивают про SOLID, и как раз там мы проходили эти принципы. Действительно всё пригодилось! Был даже курс, который сначала казался скучным, а потом в работе я возвращался к нашим методичкам и применял те знания. 

И насчёт зарплаты: GeekBrains, когда указывал её размер, не обманул! :)

Как выглядит мой рабочий день

Я работаю дома, обустроил себе кабинет. Открываю с утра компьютер, запускаю наш таймер, отслеживающий время работы для дальнейшей оплаты. Потом пишу письмо с небольшим отчётом: что делал вчера, что буду делать сегодня, какие есть проблемы. Так как мы работаем удалённо, не встречаемся, то просто пишем такие письма. Потом я беру задачу из специальной программы и начинаю её выполнять. Параллельно у меня открыт Skype, в котором мы с коллегами переписываемся. Так примерно и выглядит мой типичный день.

Мой кабинет, обустроенный на балконе

Начало и конец рабочего дня не регламентированы, есть лишь рекомендация, чтоб пересечения времени с другими сотрудниками было как можно больше. Я начинаю свой день в 8 или даже немного пораньше. Отвожу детей в садик, прихожу домой и начинаю работать. Заканчиваю в 17, так как опять нужно идти в садик :)

У меня рабочий день получается 8 часов, может, чуть-чуть больше. В офисе, насколько я представляю, люди работают меньше, чем на удалёнке. Так как можно поболтать с коллегами или опоздать на работу из-за проблем с общественным транспортом. А у меня такого нет — я просто пошёл в свою комнату и работаю. 

Чтобы мы не только работали, но и общались, друг друга знали, у нас организованы клубы. Например, есть книжный клуб: мы выбираем книгу, читаем её, а потом собираемся в Skype и обсуждаем. Время таких клубов тоже считается рабочим.

Весь процесс работы довольно приятный. Не думаю, что получится быть программистом, если не нравится кодить. На заводе, например, можно не любить своё занятие, но тем не менее работать. Вряд ли программист так сможет, потому что работа творческая.

Пара советов абитуриентам и студентам

Перед поступлением определитесь, нравится вам вообще программирование или нет. Им может заниматься каждый или почти каждый, но нужно очень сильно этого хотеть. Без огромного желания у меня точно ничего бы не получилось.

Учите английский — это наиболее важная из общих рекомендаций! Он пригодится везде. Читать статьи, книги (пожалуй, высший пилотаж), смотреть конференции, устроиться на работу в любой точке мира.

На GeekBrains удобно, что можно не «присутствовать» на занятии, а посмотреть запись. Но это значит у самого себя украсть время на выполнение практического задания. Лучше смотрите всё в прямом эфире, чтобы иметь возможность задать вопрос преподавателю на месте. Помню, было здорово, когда в четвёртой четверти на занятии могло присутствовать всего два-три студента и мы прямо голосом общались. 

Не ограничивайтесь учёбой в GeekBrains — пользуйтесь другими ресурсами. Но выбирайте их тщательно. Например, я раньше следил за множеством источников, но потом обнаружил, что они часто публикуют статьи людей, которые перефразируют сказанное Apple. Компания каждый год проводит конференцию для разработчиков WWDC. Там показывают и рассказывают, что есть нового в их среде разработки, технологиях. Если есть хотя бы среднее знание английского, то очень рекомендую следить. Можно смотреть и читать на их сайте. Можно в приложении для iOS или Apple TV. 

Можно почитать перевод учебника Apple. Но из-за частых обновлений я всё же рекомендую его в оригинале. Советую ещё интересный блог про язык Swift — Swift by Sundell. И, конечно, тематические разделы Хабра, Medium. Рекомендую также подкаст «Подлодка» — еженедельное аудиошоу про IT и всё, что с ним связано.

А вот несколько полезных Telegram-каналов, на которые я успел подписаться:

Чуть не забыл совет для абитуриентов — поступайте под Новый год, я так большую скидку получил.

О важности непрерывного обучения и немного о планах

В нашем деле если не будешь развиваться постоянно, то очень быстро лишишься того, что есть. Правда, теперь на портал GeekBrains я захожу редко, потому что он всё-таки направлен на обучение с нуля.  

Я сейчас поднимаю фундаментальные знания, которые пригодятся в любой области профессии. Насколько мне известно, когда программист устраивается, например, в Google, его там не считают разработчиком сайтов или специалистом по какому-то языку. Это просто инженеры, которые могут делать по большому счёту всё. Не важно, на каком языке ты пишешь, — если у тебя есть фундаментальные знания, то ты новый язык изучишь за неделю и будешь делать на нём то, что требуется.

Если заглядывать дальше, лет на 5–10, то я не хочу ограничиваться iOS. Сейчас на острие прогресса машинное обучение, было бы здорово в эту область заглянуть — и, возможно, стать в ней специалистом. Сейчас эти профессионалы как раз самые востребованные и высокооплачиваемые, там интересные вещи происходят. И технологии машинного обучения применяются всё больше: хоть в самоуправляемых машинах, хоть в поисковой выдаче. Может, даже когда-нибудь получится сделать робота, который будет ходить по Марсу и сам всё делать, а не ждать команд с Земли.

В таком, глобальном смысле iOS-разработка немного ограничена. Да, я пишу под телефоны, это здорово: их миллионы, можно написать очень много разных программ… Но в машинном обучении потенциал гораздо шире.

Пока предпочтений в этом направлении нет — просто хочется делать то, что принесёт как можно большую пользу людям на нашей планете. Что-то масштабное — как SpaceX, например. Поэтому и подтягиваю фундаментальные знания. Читаю книгу «Совершенный код» — она очень большая, её ещё называют библией программиста. Хочу прочитать «Приёмы объектно-ориентированного проектирования. Паттерны проектирования» от «Банды четырёх», а также «Алгоритмы. Построение и анализ», авторы — Томас Х. Кормен, Чарльз И. Лейзерсон. Пожалуй, это мой заключительный совет — на случай, если кому-нибудь тоже хочется стать универсальным солдатом в программировании.

Советуем прислушаться к совету Евгения о поступлении под Новый Год — с 1 декабре вас ждут ещё большие скидки на все наши учебные программы!

Пройти обучение

29 ноя 19, 12:45
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Быстрый старт с Java: пишем «крестики-нолики»

Перед прочтением данной статьи рекомендую ознакомиться с предыдущей, «Быстрый старт с Java: начало», поскольку ожидается, что читатель владеет материалом, изложенным в ней — знает о переменных, условиях, циклах и импорте классов. Сегодня мы углублим знания о Java, создавая игру «Крестики-нолики», которая работает в командной строке (консоли). В процессе будет рассмотрена работа с массивами, а также некоторые аспекты объектно-ориентированного программирования (нестатические методы, нестатические поля, конструктор).

Массивы

При написании игры используется массив, поэтому давайте для начала рассмотрим, что это. Массивы хранят набор однотипных переменных. Если переменная похожа на коробочку, с написанным на боку типом, именем и со значением внутри, то массив похож на блок таких коробочек. И тип, и имя у блока одно, а доступ к той или иной коробочке (значению) происходит по номеру (индексу).

В Java массивы являются объектами, их создают с помощью директивы new. При создании указываем количество элементов массива или инициализируем его набором значений. Приведенный код иллюстрирует оба варианта:

class Arrays {
    public static void main(String[] args) {
        int[] arr = new int[5];
        int[] arrInit = {1, 2, 3, 4, 5};
        for (int i = 0; i < arr.length; i++) {
            arr[i] = i * 2 + arrInit[i];
        }
        for (int a : arr) {
            System.out.println(a);
        }
    }
}

С элементами массива можно работать как с обычными переменными, присваивая им результат выражения и читая хранимые значения. При этом в квадратных скобках указывается индекс элемента массива. Индексация в Java идёт с 0 (с нуля). Первый цикл инициализирует элементы массива arr при помощи значений из массива arrInit. Каждый массив имеет поле length, содержащее количество его элементов. Второй цикл выводит элементы массива в консоль, используя второй вариант for  без счётчика цикла.

Методы

Кроме main() класс может содержать и другие методы. Рассмотрим в качестве примера класс с методом add(), который вычисляет и возвращает сумму двух значений, переданных как параметры. Обратите внимание на тип int, который стоит перед именем метода — это тип возвращаемого значения. Две переменные в скобках — параметры. Совокупность имени и параметров называют сигнатурой метода. Вызов метода происходит по имени, в скобках указывают передаваемые значения. В методе они попадают в параметры-переменные. Команда return возвращает результат сложения этих двух переменных и обеспечивает выход из метода.

class MethodStatic {
    public static void main(String[] args) {
        int c = add(5, 6);
        System.out.println("5 + 6 = " + c);
    }
 
    static int add(int a, int b) {
        return a + b;
    }
}

Слово static означает, что метод статический. Если мы обращается к какому-либо методу из статического метода, то вызываемый тоже должен быть статическим. Вот почему add() статический — он вызывается из статического main(). Использование статических методов — скорее исключение, чем правило, поэтому давайте посмотрим как сделать add() нестатическим.

Решение одно — создать объект на основании класса. И затем вызывать метод через точку после имени объекта. В этом случае метод может быть нестатическим. Представленный ниже код это иллюстрирует.

class MethodNotStatic {
    public static void main(String[] args) {
        MethodNotStatic method = new MethodNotStatic();
        int c = method.add(5, 6);
        System.out.println("5 + 6 = " + c);
    }
 
    int add(int a, int b) {
        return a + b;
    }
}

Поля класса

Переменные существуют в рамках лишь того метода, где они объявлены. А если нужна переменная, доступная во всех методах класса, то пришло время использовать поля. Поля объявляются подобно переменным, с указанием типа и имени. Но располагаются они не в методах, а прямо в теле класса. Подобно методам, они могут быть статическими и нестатическими. Нестатические поля, как и методы, доступны только после создания объекта.

class FieldExample {
    int a;
 
    public static void main(String[] args) {
        FieldExample field = new FieldExample();
        field.a = 12;
        System.out.println("a = " + field.a);
        System.out.println(field.getA());
        field.printA();
    }
 
    int getA() {
        return a;
    }
 
    void printA() {
        System.out.println(a);
    }
}

Приведённый выше код иллюстрирует работу с нестатическим полем int a. Описание полей принято размещать первыми в коде класса, затем идут описания методов. Возможность обращаться к полю (запись, чтение) мы получаем только после создания объекта. Также видно, что это поле доступно во всех нестатических методах объекта, а в статическом main() — через точку после имени объекта.

Крестики-нолики. Шаблон класса

Приступим к написанию кода игры. Начнём с шаблона класса и определения нужных полей. Именно это содержит приведённый ниже код. Первые две строки — импорт классов. Первыми в теле класса идут описания полей, затем методов. Метод main() используется для создания объекта (так как поля и методы нестатические) и вызова метода game() с игровой логикой.

import java.util.Random;
import java.util.Scanner;
 
class TicTacToe {
    final char SIGN_X = 'x';
    final char SIGN_O = 'o';
    final char SIGN_EMPTY = '.';
    char[][] table;
    Random random;
    Scanner scanner;
 
    public static void main(String[] args) {
        new TicTacToe().game();
    }
 
    TicTacToe() {
        // конструктор: инициализация полей
    }
 
    void game() {
        // игровая логика
    }
 
    // дополнительные методы
}

В качестве полей используем три символьные константы: SIGN_X, SIGN_O и SIGN_EMPTY. Их значения нельзя изменять, об этом говорит модификатор final. Двумерный символьный массив table будет нашим игровым полем. Потребуется также объект random для генерации ходов компьютера и scanner для ввода данных от пользователя.

Имена методов принято писать с маленькой буквы. Однако в коде мы видим метод TicTacToe() — есть ли тут нарушение? Нет, поскольку этот метод особенный и в объектно-ориентированном программировании называется конструктор. Конструктор вызывается сразу после того, как объект создан. Его имя, как видим, должно совпадать с именем класса. Мы используем конструктор для инициализации полей.

TicTacToe() {
    random = new Random();
    scanner = new Scanner(System.in);
    table = new char[3][3];
}

Игровая логика

Игровая логика располагается в методе game() и базируется на бесконечном цикле while. Ниже в фрагменте кода последовательность действий описана через комментарии:

// инициализация таблицы
while (true) {
    // ход человека
    // проверка: если победа человека или ничья:
    //    сообщить и выйти из цикла
    // ход компьютера
    // проверка: если победа компьютера или ничья:
    //    сообщить и выйти из цикла
}

При написании рабочего кода, каждое действие — например, «ход человека», «ход компьютера», «проверка» — мы заменим на вызов соответствующего метода. При возникновении выигрышной или ничейной ситуации (все клетки таблицы заполнены), выходим из цикла с помощью break, завершая игру.

void game() {
    initTable();
    while (true) {
        turnHuman();
        if (checkWin(SIGN_X)) {
            System.out.println("YOU WIN!");
            break;
        }
        if (isTableFull()) {
            System.out.println("Sorry, DRAW!");
            break;
        }
        turnAI();
        printTable();
        if (checkWin(SIGN_O)) {
            System.out.println("AI WIN!");
            break;
        }
        if (isTableFull()) {
            System.out.println("Sorry, DRAW!");
            break;
        }
    }
    System.out.println("GAME OVER.");
    printTable();
}

Реализация вспомогательных методов

Пришло время написать код методов, вызываемых в game(). Самый первый, initTable(), обеспечивает начальную инициализацию игровой таблицы, заполняя её ячейки «пустыми» символами. Внешний цикл, со счетчиком int row, выбирает строки, а внутренний, со счётчиком int col, перебирает ячейки в каждой строке.

 
void initTable() {
    for (int row = 0; row < 3; row++)
        for (int col = 0; col < 3; col++)
            table[row][col] = SIGN_EMPTY;
}

Также потребуется метод, отображающий текущее состояние игровой таблицы printTable().

void printTable() {
    for (int row = 0; row < 3; row++) {
        for (int col = 0; col < 3; col++)
            System.out.print(table[row][col] + " ");
        System.out.println();
    }
}

В методе turnHuman(), который позволяет пользователю сделать ход, мы используем метод nextInt() объекта scanner, чтобы прочитать два целых числа (координаты ячейки) с консоли. Обратите внимание как используется цикл do-while: запрос координат повторяется в случае, если пользователь укажет координаты невалидной ячейки (ячейка таблицы занята или не существует). Если с ячейкой всё в порядке, туда заносится символ SIGN_X — «крестик».

void turnHuman() {
    int x, y;
    do {
        System.out.println("Enter X and Y (1..3):");
        x = scanner.nextInt() - 1;
        y = scanner.nextInt() - 1;
    } while (!isCellValid(x, y));
    table[y][x] = SIGN_X;
}

Валидность ячейки определяет метод isCellValid(). Он возвращает логическое значение: true — если ячейка свободна и существует, false — если ячейка занята или указаны ошибочные координаты.

boolean isCellValid(int x, int y) {
    if (x < 0 || y < 0 || x >= 3|| y >= 3)
        return false;
    return table[y][x] == SIGN_EMPTY;
}

Метод turnAI() похож на метод turnHuman() использованием цикла do-while. Только координат ячейки не считываются с консоли, а генерируются случайно, при помощи метода nextInt(3) объекта random. Число 3, передающееся как параметр, является ограничителем. Таким образом, генерируются случайные целые числа от 0 до 2 (в рамках индексов массива игровой таблицы). И метод isCellValid() снова позволяет нам выбрать только свободные ячейки для занесения в них знака SIGN_O — «нолика».

void turnAI() {
    int x, y;
    do {
        x = random.nextInt(3);
        y = random.nextInt(3);
    } while (!isCellValid(x, y));
    table[y][x] = SIGN_O;
}

Осталось дописать два последних метода — проверка победы и проверка на ничью. Метод checkWin() проверяет игровую таблицу на «победную тройку» — три одинаковых знака подряд, по вертикали или горизонтали (в цикле), а также по двум диагоналям. Проверяемый знак указан как параметр char dot, за счёт чего метод универсален - можно проверять победу и по «крестикам» и по «ноликам». В случае победы возвращается булевское значение true, в противном случае — false.

boolean checkWin(char dot) {
    for (int i = 0; i < 3; i++)
        if ((table[i][0] == dot && table[i][1] == dot &&
                         table[i][2] == dot) ||
                (table[0][i] == dot && table[1][i] == dot &&
                                  table[2][i] == dot))
            return true;
        if ((table[0][0] == dot && table[1][1] == dot &&
                  table[2][2] == dot) ||
                    (table[2][0] == dot && table[1][1] == dot &&
                      table[0][2] == dot))
            return true;
    return false;
}

Метод isTableFull() во вложенном двойном цикле проходит по всем ячейкам игровой таблицы и, если они все заняты, возвращает true. Если хотя бы одна ячейка ещё свободна, возвращается false.

boolean isTableFull() {
    for (int row = 0; row < 3; row++)
        for (int col = 0; col < 3; col++)
            if (table[row][col] == SIGN_EMPTY)
                return false;
    return true;
}

Теперь осталось собрать все эти методы внутри TicTacToe. Последовательность их расположения в теле класса не важна. А после этого можно попробовать сыграть с компьютером в крестики-нолики.

Заключение

На всякий случай прилагаю мой telegram — @biblelamp. Если вас заинтересовала тема, рекомендую почитать «Java-программирование для начинающих» Майка МакГрата и «Изучаем Java» Кэти Сьерра и Берт Бейтс. Также напоминаю ссылку на мою предыдущую статью, где мы начали знакомство с Java.

Если язык Java вас заинтересовал — приглашаем на факультет Java-разработки. Если ещё не совсем уверены — посмотрите истории успеха наших Java-выпускников:

Пройти обучение

28 ноя 19, 11:13
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Обучение Python для школьников

В мае 2019 года в рамках нашей «гик-школы» мы запустили первый поток трехмесячного детского курса Python, где ученики могут не только начать разработку на Python, но также познакомиться с основами программирования и веб-разработки вообще. Новый поток стартует совсем скоро, 29 ноября, и в этом материале мы собрали ответы на все важные вопросы.

Что такого особенного в вашем курсе?

Главная особенность курса — в цели обучения. Школьники здесь не готовятся на должность middle-разработчика, а, скорее, знакомятся с миром IT, разработки. Поэтому учебный материал не только проще подается, но иначе выстроен. Яркие презентации, лаконичные методички, облегченные практические задания — все призвано подстёгивать интерес к учебе. 

При этом в программе учтены ошибки и трудности, через которые проходит начинающий программист вне зависимости от возраста.

Что нужно знать и уметь к началу занятий?

Сразу скажем: знаний о разработке не нужно, мы учим программированию с нуля, с установки Python и среды разработки. А вот что точно понадобится:

  • Базовые навыки работы на компьютере. Надо уметь устанавливать и запускать программы, выходить в интернет, создавать и копировать файлы.
  • Математика на уровне начальной школы. Код всегда связан с логикой и вычислениями.
  • Английский язык на базовом уровне. В коде мы используем английские слова — их надо уметь запоминать. Сюда же относится умение печатать в американской раскладке.

Остальному научит Алексей Петренко — один из самых опытных наших преподавателей, декан факультета Python в GeekUniversity.

Что будут создавать на курсе?

Основным проектом учеников будет сайт-визитка. Это хорошее начало для развития в мире IT. Такой проект позволяет не только изучить Python, но и параллельно вникнуть сразу в несколько других языков и популярных инструментов — HTML, CSS, JavaScript, SQL, Bootstrap, Flask. Все это будет освоено на базовом уровне, таким образом сформируется первый стек технологий.
 
Преимущество сайта-визитки ещё и в том, что такой результат можно легко увидеть и оценить. Это как игрушка, которую делаешь сам — играть с ней вдвойне приятно и друзьям всегда показать можно.

А как с нагрузкой?

Курс разработан специально для детей и нагрузка здесь ниже, чем на взрослых занятиях в GeekBrains. Уроки-вебинары длительностью 1,5 часа проходят раз в неделю. Каждый урок разбит на две половины, между которыми предусмотрен перерыв. Мы постарались найти баланс так, чтобы ребёнок нормально ознакомился с новой технологией и при этом не успел устать или заскучать.

Домашние задания составлены так, чтобы ученик получал видимый, практический результат без долгого сидения за монитором. На первом уроке преподаватель договаривается с ребятами, что работы по курсу они готовят только после основных школьных домашних заданий и сдают до выходных. То есть на выполнение заданий дается пять дней, в течение которых ученику нужно найти примерно 1-3 часа на «домашку по питону».

При такой нагрузке, помимо курсов GeekSchool, у ребят остается время и на другие дополнительные занятия, отдых и развлечения.

По запросу «сайты, созданные с Python» Google выдает множество топовых ресурсов — включая самого себя.

Профессиональная сфера разработки быстро развивается. Насколько актуальные вещи преподаете вы?

В обучении мы используем востребованные веб-технологии, с которыми даже неопытный разработчик может получить привлекательный результат. На этом фундаменте можно легко переходить к более сложным вещам. Расскажем чуть подробнее об инструментах.

  • Flask — минималистичный по своей концепции фреймворк, который позволяет пятью строчками кода создать веб-версию «Нello, world!». Весь проект можно собирать как конструктор, из готовых компонентов. Простота в освоении и отсутствие лишнего — вот за что мы выбрали Flask.
  • Bootstrap — набор инструментов и заготовок, ускоряющих создание веб-страниц. Вместо того чтобы месяц углубляться в тонкости CSS и JavaScript, с Bootstrap мы просто берем шаблон и получаем отличное динамическое меню или стильную анимированную кнопку для сайта. Быстрые результаты мотивируют новичков.
  • Jinja2 — шаблонизатор, полезный при создании веб-приложений на Flask. По шаблону генерирует Python-код, который можно тут протестировать в «песочнице».
  • SQLite — база данных, реализованная в одном файле. Идеальна для первого знакомства с возможностями современных СУБД, не требует сложной установки и настройки.

Все инструменты подобраны под реальную задачу — создание сайта-визитки. Вместо массивных решений, отпугивающих новичков, мы покажем кратчайший путь к результату и немного программистской магии.

А если ребенку не понравится Python? Получается, всё было зря?

Совсем нет. Знания курса в любом случае могут пригодиться ещё не раз. Основы программирования, с которыми познакомятся ученики, являются общими для большинства современных языков. Понятия переменной, ветвления, цикла полезны не только программисту, но также тестировщику, да и любому IT-специалисту в принципе.

В курсе мы затронем HTML, CSS и JavaScript. Если ребенку понравится это, он сможет заняться версткой сайтов и frontend-разработкой. Если приглянется SQL, на котором пишут запросы к базам данных, ему будет с чего начать учиться на аналитика. В подростковом возрасте есть время на изучение разных языков и технологий. Остается пробовать и выбирать.

Про сайт-визитку понятно, а что ещё будет уметь ребёнок после курса?

Давайте сведём все вместе. Выпускник нашего курса Python для школьников сможет создавать:

  • Любые простые сайты на несколько страниц. Например, сайт автосервиса дяди Пети или блог, посвященный любимому коту. 
  • Небольшие веб-приложения, в том числе многопользовательские. Вполне сможет реализовать на сервере игры типа «крестики-нолики», «морской бой» и играть с другом через интернет.
  • Кроссплатформенные проекты. То есть сайты и веб-приложения, доступные отовсюду — с компьютеров, мобильных устройств, телевизоров и игровых консолей.

А как развиваться после курса?

Главное — не останавливаться, иначе знания могут уйти в пассив и стереться из памяти. Можно перейти к взрослым курсы — у нас есть бесплатный интенсив по Python, а также программы подготовки junior- и middle-специалистов. Помимо веб-разработки c Python, можно познакомиться с близкими IT-направлениями, которые были затронуты в время курса — возможно, они вызовут больший энтузиазм.

Советуем записывать идеи, которые появились в процессе обучения, и впоследствии попытаться реализовать их самостоятельно или в команде с однокурсниками. Стартап, запущенный школьниками — это будет круто и всем интересно.

Любовь к программированию, которая проявится в подростковом возрасте, спустя 5-10 лет может привести на работу мечты — с большой зарплатой, карьерными перспективами и радостью от любимого дела.

Как записаться на курс?

Достаточно просто оставить заявку на странице. Новый поток стартует 29 ноября.

Пройти обучение

20 ноя 19, 16:13
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Быстрый старт с Java: от знакомства до вашей первой игры 

Эта статья рассчитана на новичков в программировании. Её цель — объяснить азы языка Java (классы, методы, компиляция, байт-код, JVM, переменные, условия, циклы, импорт). Этот материал поможет:

  • научиться писать код, компилировать и запускать байт-код;
  • познакомиться с переменными;
  • узнать об условных операторах и циклах;
  • освоить использование классов из стандартных пакетов;
  • написать простую консольную игру «Угадай число».

Java Development Kit (JDK)

Для работы с Java необходимо скачать, установить и настроить Java Development Kit (JDK) — пакет программ и утилит для разработчика. Он бесплатно предоставляется компанией Oracle.
В строку поиска Google вводим запрос “jdk 8 download” и в первой же строке поисковой выдачи видим ссылку на страницу загрузки на oracle.com. Листаем вниз, щёлкаем Accept License Agreement — соглашаемся с лицензией. Выбираем пакет в колонке Download, который соответствует вашей операционной системе и её разрядности (32 или 64 бита). Для скачивания нужно будет зарегистрироваться на сайте. Скачиваем и устанавливаем JDK. При выборе пакетов и папки JDK рекомендую отказаться от Public JRE и сократить имя папки до jdk1.8.

Счастливым обладателям Windows потребуется также настройка системных переменных. Как их найти: Панель управления → Система → Дополнительные параметры системы → Вкладка «Дополнительно» → кнопка «Переменные среды», второе окошко сверху. В нем надо создать переменную JAVA_HOME и изменить (дополнить) Path (для этого используются кнопки «Создать» и «Изменить». Значение для переменной JAVA_HOME содержит путь к папке JDK. Переменную Path дополняем значением %JAVA_HOME%\bin. Обратите внимание, что список путей разделяется точкой с запятой (;). Инструкция есть также на сайте Oracle.

JDK содержит много утилит, но нам потребуется только компилятор (javac) и виртуальная машина Java — JVM (java).

Проверить правильность установки и настройки можно в командной строке (на Windows: Win + R → cmd) или в терминале (Linux, Mac), набрав следующие команды:

javac -version
java -version

В качестве альтернативы можно использовать онлайн-JDK вместе с редактором, например на сайте Repl.it.

Написание кода

Писать исходный код можно в любом текстовом редакторе. А компиляцию и запуск проводить в командной строке (терминале). Но удобнее будет работать в редакторе с подсветкой синтаксиса и плагином, автоматизирующим компиляцию и запуск.

Для Windows хорошим выбором будет Notepad++ с плагином NppExec. Подробно о его настройке можно прочитать в статье Виктора Темпалова  «Компилируем и запускаем Java-файлы из Notepad++». Для Linux и Мас есть другие текстовые редакторы, например Atom или Sublime Text.

Hello, world!

При изучении нового языка писать программу, выводящую «Hello, world!», — это традиция. Она возникла в 1978 году, с выходом в свет книги «Язык программирования С» Брайана Кернигана и Денниса Ричи.

class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, world!");
    }
}

Код начинается с ключевого слова class. Java-программы состоят из классов — это «кирпичики» приложения. В реальных приложениях их могут быть десятки, сотни и тысячи. Затем пишется имя класса — HelloWorld. Имена классов принято писать в стиле CamelCase (все слова слитно, каждое с заглавной буквы). Классам, как и другим сущностям — методам, полям и переменным — рекомендуется давать мнемонические, «говорящие» имена.

После имени в фигурных скобках записывается тело класса. Оно может содержать поля, методы и другие классы. Поля хранят данные. Они подобны переменным, однако в Java это несколько иная сущность. Методы содержат набор команд или код. Имена методов (как и полей, переменных) принято писать в стиле camelCase, со строчной буквы.

В нашем классе только один метод — main(). Он особенный, его часто называют стартовым. Когда виртуальная машина Java получает класс для исполнения, она ищет в нём метод main. Если находит — выполняет код, который содержит метод. Если нет — выдаёт сообщение об ошибке. Важно, чтобы метод main() имел строго определённую сигнатуру: был публичным (public), статическим (static), не возвращающим никакого значения (void), с параметром в виде массива строк (String[] args). В противном случае виртуальная машина его просто не найдёт.

Наш метод main() содержит лишь одну строку, которая выводит в консоль текст "Hello, world!".

Перед компиляцией сохраняем написанный код в файл. Имя файла должно соответствовать имени класса с точностью до регистра символов (Java — регистрозависимый язык). Затем открываем командную строку (или терминал) и вызываем сначала компилятор (javac), а потом виртуальную машину JVM (java).

C:\Users\User>javac HelloWorld.java
C:\Users\User>java HelloWorld
Hello, world!

После компиляции возникнет бинарный файл HelloWorld.class, содержащий байт-код. Имя этого файла (без расширения) передаётся как параметр при вызове виртуальной машины. В результате видим строку «Hello, world!» — это результат выполнения программы.

Переменные

Переменные хранят данные (числа, строки, логические значения и другие). Они похожи на коробочки: надписи на них — это имя и тип переменной, а внутри находится значение. При этом возможны две операции:

  • запись значения в переменную (или присвоение значения);
  • чтение значения из переменной. 

В Java перед использованием переменную нужно обязательно объявить, указав тип и имя, поскольку Java — язык со строгой и статической типизацией. Попытка использовать переменную без объявления приведёт к ошибке компиляции. По типу переменные могут быть простыми (числа, символы, логические значения) или ссылочными (массивы, строки, любые другие объекты). В Java есть восемь простых типов (byte, int, short, long, float, double, boolean, char) и бесконечное количество ссылочных.

В примере ниже мы видим объявление двух переменных целого типа (int). Причём переменная second инициируется при объявлении. Затем переменной first присваивается результат выражения, в котором присутствует переменная second. В результате выполнения программы в консоль будут выведены значения обеих переменных: 35 и 10.

class Variables {
    public static void main(String[] args) {
        int first;
        int second = 10;
        first = second * 3 + 5;
        System.out.println(first);
        System.out.println(second);
    }
}

Имя переменной может содержать буквы и цифры, знак подчёркивания и $. Имя не должно начинаться с цифры. В профессиональной разработке в именах переменных используют только буквы. Имя должно явно указывать на назначение переменной. Например: countString — счётчик строк, errorSign — признак ошибки. Рекомендуется избегать однобуквенных имён — за исключением временных переменных (существующих в рамках цикла или небольшого кодового блока).

Проверка условий

Любой язык программирования высокого уровня позволяет изменять порядок выполнения программы в зависимости от заданного условия. В Java для этого используется конструкция if. После этого ключевого слова в скобках записывается логическое выражение, затем в фигурных скобках — группа команд. Если результат логического выражения — true (истина), то эта группа команд выполняется, если false (ложь) — нет.

class ComparisonShort {
    public static void main(String[] args) {
        int i = 10;
        if (i == 10) {
            System.out.println("i = 10");
        }
    }
}

Результат этого примера — строка “i = 10” в консоли, так как результат логического выражения (проверка на равенство) будет true.

В качестве знаков сравнения допустимы: <, <=, >, >=, ==, !=. Добавив ключевое слово else, получаем полную форму оператора сравнения.

class ComparisonFull {
    public static void main(String[] args) {
        int i = 10 + 2;
        if (i == 10) {
            System.out.println("i = 10");
        } else {
            System.out.println("i != 10");
        }
    }
}

Выполнив эту программу, мы увидим в консоли сообщение “i != 10”, так как результат сравнения значения переменной i и цифры 10 будет false. Поэтому выполнится набор команд в фигурных скобках после слова else.

Циклы

Циклы предназначены для повторения группы команд. Java позволяет использовать два вида циклов:

  • с определённым количеством итераций: for;
  • без определенного количества итераций: while и do-while.
class CycleFor {
    public static void main(String[] args) {
        for (int i = 0; i < 5; i++) {
            System.out.println(i);
        }
    }
}

Запустив этот пример, мы увидим в консоли колонку чисел от 0 до 4. Это результат работы классического цикла for со счётчиком. В круглых скобках три параметра цикла, разделённые точкой с запятой: объявление и инициализация счётчика, проверка условия продолжения цикла, действие после каждой итерации. В фигурных скобках — тело цикла. В нашем случае это команда, выводящая значение счётчика i в консоль.

Когда будем писать игру, используем циклы while и do-while — там и увидим их работу на практике. Пока достаточно сказать, что их синтаксис проще for, а тело цикла повторяется до тех пор, пока логическое выражение в круглых скобках после while возвращает true.

Пример ниже иллюстрирует вторую форму цикла for — без счётчика. Такой вариант удобен при переборе элементов массива или списка.

class CycleForeach {
    public static void main(String[] args) {
        int[] arr = {5, 4, 3, 2, 1};
        for (int a : arr) {
            System.out.println(a);
        }
    }
}

Импорт и использование классов

Один из важных принципов программирования — DRY: Don’t Repeat Youself (не повторяйся). Разработчик должен уметь использовать то, уже создано, отлажено и работает.

Java поставляется с набором packages (пакетов). Они содержат скомпилированные классы, сгруппированные по тематике. На неё указывает имя пакета: java.io, java.util, java.net и так далее.

В игре нам потребуется случайное число от 0 до 9. Писать генератор случайных чисел незачем, так как в пакете java.util есть готовый класс Random. Чтобы использовать класс из пакета, его нужно импортировать. Строки с директивами импорта располагаются в самом начале файла класса.

import java.util.Random;

Создадим объект на основании класса, чтобы можно было вызвать нужный метод. Слева от знака присваивания (=) объявляем ссылочную переменную (объект) random типа Random. Справа создаём объект с помощью директивы new.

Random random = new Random();

Вызываем метод через точку после имени объекта: random.nextInt(10). Цифра 10 ограничивает диапазон генерируемых чисел (от 0 до 9). В результате получим строку из 30 случайных чисел. Запустите программу несколько раз и обратите внимание, что последовательность чисел не повторяется.

import java.util.Random;
 
class RandomInt {
    public static void main(String[] args) {
        Random random = new Random();
        for (int i = 0; i < 30; i++) {
            System.out.print(random.nextInt(10) + " ");
        }
    }
}

Игра «Угадай число»

Мы узнали достаточно, чтобы написать игру «Угадай число». В ней компьютер «загадывает» целое число от 0 до 9, а человек должен угадать его — есть три попытки.

Создадим класс GuessTheNumber с методом main(), импортируем нужные нам классы и добавим соответствующие объекты. Класс Scanner обеспечит чтение чисел с консоли (System.in — консоль).

import java.util.Scanner;
import java.util.Random;
 
class GuessTheNumber {
    public static void main(String[] args) {
        Random random = new Random();
        Scanner sc = new Scanner(System.in);
    }
}

Объявим и инициируем три переменные: счётчик попыток count, для чтения числа с консоли — guess, для хранения загаданного числа — number.

int count = 0;
int guess = -1; 
int number = random.nextInt(10);

Опишем основной игровой цикл, используя while. В цикле запрашиваем число с консоли, сравниваем с загаданным. В случае несовпадения выводим подсказку и увеличиваем счётчик попыток на 1.

while (count < 3 && guess != number) {
    System.out.print("Guess the number (0..9): ");
    guess = sc.nextInt();
    if (number != guess) {
        System.out.println("Your number is " +
            ((guess > number)? "greater" : "less"));
        count++;
    }
}

Тело цикла while повторяется, пока логическое значение в скобках возвращает true. Таким образом наш цикл будет повторяться, пока значение счётчика попыток меньше 3 и число не отгадано. Обратите внимание на конструкцию, которая позволяет выбрать одно из двух значений согласно условию в скобках. Это тернарный оператор. Если условие в скобках true, то возвращается значение слева от двоеточия, если false — справа.

(guess > number)? "greater" : "less"

Остаётся добавить строку с выводом результата игры (победа или проигрыш) после цикла — тут снова используется тернарный оператор. Текст работающей программы выглядит так:

import java.util.Scanner;
import java.util.Random;
 
class GuessTheNumber {
    public static void main(String[] args) {
        Random random = new Random();
        Scanner sc = new Scanner(System.in);
        int count = 0;
        int guess = -1;
        int number = random.nextInt(10);
        while (count < 3 && guess != number) {
            System.out.print("Guess the number (0..9): ");
            guess = sc.nextInt();
            if (number != guess) {
                System.out.println("Your number is " +
                    ((guess > number)? "greater" : "less"));
                count++;
            }
        }
        System.out.println("You " +
            ((guess == number)? "WIN!" : "Lose: " + number));
    }
}

Сохраняем программу в файл GuessTheNumber.java, компилируем (javac), вызываем JVM (java) — и пробуем выиграть у компьютера.

Добавим заключительный штрих: используя цикл do-while, позволим пользователю повторять сеанс игры без перезапуска программы. В приведённом ниже коде комментарий нужно заменить на соответствующий фрагмент из предыдущей программы. Попробуйте сделать это самостоятельно.

import java.util.Random;
import java.util.Scanner;
 
class GuessTheNumber {
    public static void main(String[] args) {
        Random random = new Random();
        Scanner sc = new Scanner(System.in);
        do {
            //
            // Вставьте фрагмент, который должен повторяться
            //
            System.out.println("Repeat game? Yes - 1, No - 0");
        } while (sc.nextInt() == 1);
    }
}

Обратите внимание, что тело цикла do-while повторяется на тех же условиях, что и тело цикла while: логическое выражение в скобках должно быть true.

Заключение

На всякий случай прилагаю мой telegram — @biblelamp. Если вас заинтересовала тема, рекомендую почитать «Java-программирование для начинающих» Майка МакГрата и «Изучаем Java» Кэти Сьерра и Берт Бейтс. В следующих статьях мы продолжим начальное изучение Java на примере создания других игр. Следите за блогом!

Если язык Java вас заинтересовал — приглашаем на факультет Java-разработки. Если ещё не совсем уверены — посмотрите истории успеха наших Java-выпускников:

Пройти обучение

15 ноя 19, 16:33
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

«Аппетит приходит во время еды – это про меня с IT»

Привет, я Роман. Живу в Эстонии, работаю в сфере логистики, интересуюсь журналистикой, играю на гитаре и люблю путешествовать. Честно сказать, я никогда не был заинтересован в IT — это казалось мне скучным. На уроках информатики не хватало терпения досидеть до конца — и я их прогуливал. Этот предмет меня раздражал. Все это длилось до тех пор, пока у меня не появилась цель — сделать свой сайт. Но это произошло не сразу.

Как все начиналось

Однажды я устроился в службу техподдержки компании, предоставляющей доступ к торгам на валютной бирже. Писал аналитические статьи, выкладывал их на сайт, занимался рассылками, конкурсами. Параллельно увлекся новостями. В один момент захотелось сделать собственный новостной портал. Но учиться программированию я по-прежнему не планировал. Поскольку на тот момент я еще ничего не умел, пришлось найти веб-мастера.

Со временем понял, что работать с подрядчиком не очень удобно. Я от него зависел: если хотел что-то добавить или улучшить, приходилось просить и ждать. Не говоря уже о финансовой стороне вопроса: любое изменение требовало денег. Сильного желания освоить разработку все еще не возникало, просто хотелось делать свое дело и не зависеть от третьих лиц. Я начал изучать сайтостроение самостоятельно, после чего понял, что надо пойти учиться систематически.

Искал курсы и нашел GeekBrains через рекламное объявление. Описание показалось мне интересным, и я прошел курс веб-мастера. Сделал собственный сайт на Wordpress, установив его через дистрибутив. Wordpress удобен, потому что позволяет собрать сайт, как конструктор. Я настроил подходящую тему оформления, установил все необходимые плагины, перенес контент со старой версии сайта (он бы написан на Joomla) — одним словом, сделал все для полноценной работы ресурса. С некоторыми трудностями столкнулся при переносе накопленного за 2 года контента на новый хост: картинки были разного формата, и их приходилось добавлять заново.

Сейчас все это кажется мне естественным, но до знакомства с GB я не имел представления о таких простых вещах. Полноценное понимание пришло уже в процессе обучения — во многом благодаря преподавателям, которые все подробно объясняли. Оказалось, освоить основы сайтостроения можно всего за 2 месяца, не углубляясь в серверные языки и базы данных.

Полная независимость

Спустя время я уже не зависел от веб-мастера, но по-прежнему пользовался готовыми темами оформления. Относительно моего бюджета это стоило немалых денег: одна из них обошлась в 60 долларов. И все бы ничего, если бы плата была разовой. Но в дальнейшем приходилось доплачивать за обновления, да и готовые плагины накладывали свои ограничения — ты априори зависишь от их ассортимента. Я же хотел независимости, но для этого нужно было приобрести больше навыков.

Тогда я решил освоить следующий курс — веб-разработку с нуля. Мы изучаем HTML, CSS, PHP, Javascript и базы данных. Могу сказать, что эти знания мне очень пригодились при работе над своим проектом. Они помогли создать свой сайт с нуля — таким, каким я хочу его видеть. До курса я тратил много времени на установку сайта на хостинг, а теперь это происходит гораздо быстрее и легче. Вишенкой на торте стал факт, что после обучения я смогу зарабатывать, создавая сайты для заказчиков.

Вскоре я действительно увлекся и взялся еще три курса: по SEO, системному администрированию и информационной безопасности. После знакомства с веб-разработкой пришел к неожиданному выводу: системное администрирование дается мне сложнее, чем сам JavaScript. Раньше думал, что быть сисадмином — легко. Возможно, у меня были общие заблуждения насчет этой профессии. Думал: протянул кабель, настроил оборудование — и готово, иди пей кофе. Оказалось не так. В системном администрировании нужно вникнуть в общий принцип: как работают программы, для чего они нужны. Общая картина складывалась тяжело, чего не скажешь о JavaScript, где все было понятно сразу: надо было лишь выучить и запомнить некоторые вещи, как при изучении иностранного языка. Просто учите, зубрите, повторяете.

Как не бросить все

При работе над сайтом постоянно всплывали ошибки. Когда что-то не получалось, опускались руки. Я пугался и думал: «Все пропало, шеф, все пропало», «Это не мое» и все в таком духе. Но любая задача решаема.

Ребята, даже если у вас есть опытный наставник, не пренебрегайте гуглением. Грамотный поиск и изучение нужной документации помогут вам найти ответы практически на любые вопросы. Другое дело, что наставник может задать вектор: подсказать, где именно и как искать. Верный алгоритм поиска — уже половина успеха, плюс сэкономленное время. Конечно, не все сразу: долгое время можно пребывать в тупике и унынии. Бывало, в критические моменты меня охватывала паника. Но справиться с ней можно, если:

  • выждать момент, пока эмоции утихнут. Успокоиться и продолжить поиск уже на свежую голову;
  • посидеть над задачей подольше, как бы банально это ни звучало.

Сейчас я уже окончил курсы SEO-специалиста и веб-мастера и стараюсь довести до ума оставшиеся три — системное администрирование, веб-разработку и информационную безопасность. Главной проблемой остается нехватка времени.

Так получилось, что я взялся за несколько курсов одновременно. С одной стороны, сложно угнаться за несколькими зайцами сразу. С другой — это лишний раз мотивирует: ты понимаешь, что уже встал на этот путь и несешь ответственность за свой выбор. Надо довести начатое до конца, чтобы не было стыдно перед собой.

Если считаете, что у вас нет времени на дополнительное образование — не спешите с выводами. Всего и сразу успеть нельзя, но выстроить свой день максимально продуктивно — можно. Могу поделиться своим скромным опытом. Я просто записываю. Когда вокруг много всего, ты будто выпадаешь из реальности. Записи помогают в нее вернуться. Не менее важно — планировать свое время по часам.

Мой обычный день выглядит примерно так:

  • 9:00 – 9:30 — завтрак;
  • 9:30 – 10:30 — час на изучение JavaScript;
  • 10:30 – 11:00 — полчаса на спортивную тренировку;
  • 11:00 – 12:00 — час на работу над своим сайтом;
  • 12:00 – 12:30 — полчаса на занятия по гитаре;
  • 12:30 – 13:30 — собираюсь на работу;
  • 13:30 – 14:30 — время в пути до работы, оно же — для изучения английского языка. В дороге я слушаю аудиопособия. Английский очень пригодится в IT-сфере — это конкурентное преимущество и интеллектуальный актив;
  • 14:30 – 23:00 — рабочий день;
  • после работы — время на другие дела или отдых.

Как видите, найти время можно на многое, если грамотно распланировать свой день. Я работаю на заводе сменами, поэтому личный график может меняться. Иногда встаю в 3 часа ночи, чтобы успеть на работу к 4 утра. Дело не в том, как именно составлен ваш график и насколько педантично вы его придерживаетесь. Суть в самом факте планирования, когда вы стабильно уделяете определенное время — пусть и небольшое — каждой из задач. В этом смысле мне было удобно проходить обучение дистанционно, гармонично встраивая его в личное расписание. На мой взгляд, это еще один плюс GeekBrains: можно просматривать вебинары в удобное время. Кроме того, на курсах советуют неплохие дополнительные материалы для самостоятельного изучения, вроде порталов htmlbook.ru, flexboxfroggy.com или webref.ru. От себя могу порекомендовать ресурс theory.phphtml.net. Все это помогает в условиях нехватки времени.

Что получилось

В итоге мой сайт стал более интересным и кликабельным. Раньше это выглядело как лента вида «картинка–текст». Сейчас есть рубрикация и категории. Внутренняя линковка работает лучше, а интерфейс стал более удобным: пользователю проще выбрать, что именно он хочет почитать. На сайте пишут люди из разных уголков мира. Я вошел во вкус и хочу развиваться дальше.

Аппетит приходит во время еды — именно так вышло у нас с IT. Я начал с простого, увлекся и перешел к более сложному. Не планировал становиться программистом, просто хотел научиться обслуживать свой сайт самостоятельно. Создавая проект, думал о его монетизации и предвкушал скорее результат, чем удовольствие от самого процесса.

Когда-то я считал эту сферу скучной или недосягаемой. Сегодня все иначе — во многом благодаря GeekBrains, где ты не просто проходишь курс, но и получаешь профессию. У каждой специализации есть подробное описание на сайте, и это позволяет приступить к учебе уже немного подготовленным. Наставники всегда помогут и подскажут. Ты чувствуешь, что не брошен — это важно. Сейчас я соотношу свои возможности с требованиями рынка и понимаю, что программистом может стать практически каждый.

Когда-то я и представить не мог, что во мне проснется интерес к разработке и IT в целом. Не мог, потому что не знал всех возможностей этой сферы:

  • большой инструментарий, чтобы работать на себя;
  • с технологиями можно связать любое свое увлечение или идею. Например, сделать сайт о путешествиях или обучающее приложение по игре на гитаре;
  • освоить новую IT-специальность вполне реально за полгода–год, а на базовые вещи может уйти всего пара месяцев;
  • войти в эту сферу можно в любом возрасте и без предварительной подготовки.

Многие из нас в юности выбирают специальность неосознанно — а потом всю жизнь не чувствуют себя реализованными, не получают от работы удовольствия. Сейчас мне 31, и потребность в изучении чего-то нового появилась у меня в 30. Главное — целеустремленность и желание постоянно развиваться. В IT начать никогда не поздно.


7 сен 18, 12:19
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0
Показаны все темы: 5

Последние комментарии

нет комментариев
Читать

Поиск по блогу

Люди

7 пользователям нравится сайт lena2018.mirtesen.ru